package com.example.order.feign.fallback;

import com.example.homework.Show;
import com.example.order.feign.ProductFeignClient;
import com.example.product.bean.Product;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;
//也需要@Component注解，因为这个类是一个组件，用于兜底，远程调用客户端的请求方法失败后，调用这里的同名方法，返回一个假数据
@Component
public class ProductRequestFallback implements ProductFeignClient {

    //若远程调用失败，这个类因为实现了ProductFeignClient接口，所以可以实现同名的方法，在原来的远程调用请求失败后，这个方法会顶上去代替，返回一些假数据或默认值
    @Override
    public Product getProductById(Long productId) {
        System.out.println("请求失败，返回假数据");
        Product product = new Product();
        product.setId(productId);
        product.setProductName("请求失败，返回假数据");
        product.setPrice(new BigDecimal(0));
        product.setNum(0);
        return product;
    }

    //作业，远程调用show接口失败后，返回一个假数据
    @Override
    public Show showProduct(Long id) {
        Show show = new Show();
        show.setPort(1);
        show.setServiceName("请求失败，返回假数据");
        return show;
    }
}
